﻿using System;
using System.Runtime.Serialization;
using NCMIS.ObjectModel.MetaData;

namespace NCMIS.Produce
{
    /// <summary>
    /// Indicates the types of JOIN keywords that the Repository can fulfill in queries.
    /// </summary>
    [DataContract(Namespace = CmisNs.Cmis)]
    public enum CapabilityJoin
    {
        /// <summary>
        /// The repository cannot fulfill any queries that include any JOIN clauses.
        /// </summary>
        [EnumMember(Value = "none")]
        None,

        /// <summary>
        /// The repository can fulfill queries that include an INNER JOIN clause, but cannot fulfill queries that include other types of JOIN clauses.
        /// </summary>
        [EnumMember(Value = "inneronly")]
        InnerOnly,

        /// <summary>
        /// The repository can fulfill queries that include any type of JOIN clause defined by the CMIS query grammar.
        /// </summary>
        [EnumMember(Value = "innerandouter")]
        InnerAndOuter,
    }
}
